const reservedWordsMap = { // 在 acorn.js 中使用
    // reserved words
    等待: "await",
    跳出: "break",
    若为: "case",
    捕: "catch",
    类: "class",
    常: "const",
    过: "continue",
    调试器: "debugger",
    默认: "default",
    删: "delete",
    做: "do",
    否则: "else",
    枚举: "enum",
    导出: "export",
    扩展: "extends",
    假: "false",
    终: "finally",
    取: "for",
    函数: "function",
    如果: "if",
    导入: "import",
    于: "in", // 取 ... 于 ... 语句 -> for ... in ...
    在: "in", // 关系运算符, a 在 b -> a in b
    是实例: "instanceof",
    新: "new",
    空: "null",
    返回: "return",
    天: "super",
    判断: "switch",
    此: "this",
    抛: "throw",
    真: "true",
    试: "try",
    // 类型: "typeof", 类型(o) -> typeof o
    变: "var",
    无: "void",
    只要: "while",
    管: "with",
    生成: "yield",
    // other key words
    设: "let",
    静态: "static",
    实现: "implements",
    接口: "interface",
    包: "package",
    私有: "private",
    保护: "protected",
    公共: "public",
    // keywords & identifiers
    为: "as",
    异步: "async",
    从: "from",
    获取: "get",
    自: "of", // 取 ... 自... -> for ... of ...
    设置: "set",
    目标: "target",
}

const es5GlobalIdentMap = {
    非数: "NaN",
    无穷: "Infinity",
    评估: "eval",
    转整数: "parseInt",
    转浮点数: "parseFloat",
    不是数: "isNaN",
    是无穷: "isFinite",
    转义: "escape",
    取消转义: "unescape",
    符号型: "Symbol",
    对象型: "Object",
    数字型: "Number",
    字符串型: "String",
    数组型: "Array",
    布尔型: "Boolean",
    正则型: "RegExp",
    错误型: "Error",
    函数型: "Function",
    数学: "Math",
    日期型: "Date",
}

const domGlobalIdentMap = {
    控制台: "console",
    输入: "prompt",
    示警: "alert",
    节点型: "Node",
    节点筛选器型: "NodeFilter",
    节点列表型: "NodeList",
    树遍历器型: "TreeWalker",
    文本型: "Text",
    文档片段型: "DocumentFragment",
    元素型: "Element",
    HTML元素型: "HTMLElement",
    事件型: "Event",
    // 鼠标事件型: "MouseEvent",
    // 滚轮事件型: "WheelEvent",
    // 键盘事件型: "KeyboardEvent",
    // 进度事件型: "ProgressEvent",
    // 输入事件型: "InputEvent",
    // 拖动事件型: "DragEvent",
    自定义事件型: "CustomEvent",
    XMLHttp请求型: "XMLHttpRequest",
    文件读取器型: "FileReader",
    表单数据型: "FormData",
    // 历史型: "History",
}

const globalIdentMap = {
    ...es5GlobalIdentMap,
    ...domGlobalIdentMap,
    引入: "require",
    引出: "exports",
    模块: "module",
    转字符串: "toString",
    长度: "length",
    // 值: "value",
    转JSON: "toJSON",
    // 切片: "slice",
    // 连接: "join",
    原语值: "valueOf",
    构造函数: "constructor",
    原型: "prototype",
    承诺: "Promise",
    那么: "then",
    兑现: "resolve",
    跳票: "reject",
    延迟执行: "setTimeout",
    周期执行: "setInterval",
    取消延迟执行: "clearTimeout",
    取消周期执行: "clearInterval",
    文档: "document",
    窗口: "window",
    添加事件监听: "addEventListener",
    移除事件监听: "removeEventListener",
    查询选择器: "querySelector",
    查询选择器_全部: "querySelectorAll",
    // 取消动画帧: "cancelAnimationFrame",
    // 请求动画帧: "requestAnimationFrame",
    // 应用缓存: "applicationCache",
    // 已关闭: "closed",
    // 默认状态: "defaultStatus",
    // 设备像素比: "devicePixelRatio",
    // 框架元素: "frameElement",
    // 所有框架: "frames",
    // 历史: "history",
    // 内高: "innerHeight",
    // 内宽: "innerWdith",
    // 位置: "location",
    // 地址栏: "locationbar",
    // 菜单栏: "menubar",
    // 外高: "outerHeight",
    // 外宽: "outerWidth",
    // 页面水平偏移: "pageXOffset",
    // 页面垂直偏移: "pageYOffset",
    屏幕: "screen",
    // 屏幕左边: "screenLeft",
    // 屏幕顶部: "screenTop",
    // 屏幕X: "screenX",
    // 屏幕Y: "screenY",
    // 滚动X: "scrollX",
    // 滚动Y: "scrollY",
    // 自身: "self",
    // 语音合成: "speechSynthesis",
    // 状态: "status",
    // 状态栏: "statusbar",
    // 工具栏: "toolbar",
    // 失去焦点: "blur",
    // 关闭: "close",
    确认: "confirm",
    // 获得焦点: "focus",
    // 获取计算样式: "getComputedStyle",
    // 获取所有匹配CSS规则: "getMatchedCSSRules",
    // 获取选定内容: "getSelection",
    // 匹配媒体: "matchMedia",
    // 移动距离: "moveBy",
    // 移动到: "moveTo",
    // 打开: "open",
    // 打开者: "opener",
    // 打印: "print",
    // 释放事件: "releaseEvents",
    // 大小调整量: "resizeBy",
    // 大小调整到: "resizeTo",
    // 滚动: "scroll",
    // 滚动距离: "scrollBy",
    // 滚动到: "scrollTo",
    // 停止: "stop",
    // 会话存储: "sessionStorage",
    // 本地存储: "localStorage",
}

const mathMap = {
    绝对值: "abs",
    上取整: "ceil",
    幂表示: "exp",
    下取整: "floor",
    最大值: "max",
    最小值: "min",
    乘方: "pow",
    随机数: "random",
    舍入: "round",
    开方: "sqrt",
}

const globalStringsMap = {
    "使用严格模式": "use strict",
    // typeof 值
    "大整数": "bigint",
    "对象": "object",
    "符号": "symbol",
    "未定义": "undefined",
    "字符串": "string",
    "数字": "number",
    "布尔型": "boolean",
    "函数": "function",
}

const typeofTagsMap = {
    "大整数": "bigint",
    "对象": "object",
    "符号": "symbol",
    "未定义": "undefined",
    "字符串": "string",
    "数字": "number",
    "真假型": "boolean",
    "函数": "function",
}

const consoleMap = {
    输出: "log",
    出错: "error",
    警告: "warn",
}

const JSONMap = {
    解析: "parse",
    转化: "stringify",
}

const documentMap = {
    主体: "body",
    字符编码: "characterSet",
    字符集: "charset",
    兼容模式: "compatMode",
    内容类型: "contentType",
    小甜饼: "cookie",
    当前脚本: "currentScript",
    默认视图: "defaultView",
    设计模式: "designMode",
    读取方向: "dir",
    文档类型: "doctype",
    根节点: "documentElement",
    文档URI: "documentURI",
    安全域: "domain",
    所有嵌入对象: "embeds",
    所有表单: "forms",
    全屏已启用: "fullscreenEnabled",
    页头: "head",
    隐藏: "hidden",
    所有图像: "images",
    实现对象: "implementation",
    输入编码: "inputEncoding",
    最后修改日期: "lastModified",
    所有链接: "links",
    位置: "location",
    所有嵌入元素: "plugins",
    就绪状态: "readyState",
    来源URL: "referrer",
    所有脚本: "scripts",
    滚动元素: "scrollingElement",
    时间线: "timeline",
    抬头: "title",
    可见性状态: "visibilityState",
    采用节点: "adoptNode",
    光标插入点: "caretPositionFromPoint",
    // 关闭: "close",
    创建属性: "createAttribute",
    创建CDATA区段: "createCDATASection",
    创建注释: "createComment",
    创建文档碎片: "createDocumentFragment",
    创建元素: "createElement",
    创建事件: "createEvent",
    创建节点迭代器: "createNodeIterator",
    创建处理指令: "createProcessingInstruction",
    创建范围: "createRange",
    创建文本节点: "createTextNode",
    创建树游走器: "createTreeWalker",
    获取指定位置元素: "elementFromPoint",
    获取指定位置元素列表: "elementsFromPoint",
    执行命令: "execCommand",
    退出全屏: "exitFullscreen",
    退出指针锁定: "exitPointerLock",
    获取动画列表: "getAnimations",
    获取元素_依据Id: "getElementById",
    获取所有元素_依据类名: "getElementsByClassName",
    获取所有元素_依据名称: "getElementsByName",
    获取所有元素_依据标签名: "getElementsByTagName",
    // 获取选定内容: "getSelection",
    有焦点: "hasFocus",
    导入节点: "importNode",
    // 打开: "open",
    查询已启用命令: "queryCommandEnabled",
    查询命令状态不确定: "queryCommandIndeterm",
    查询命令状态: "queryCommandState",
    查询支持的命令: "queryCommandSupported",
    查询命令值: "queryCommandValue",
    写入: "write",
    写入后换行: "writeln",
}

const onEventMap = {
    罗盘需要校准时: 'oncompassneedscalibration',
    设备运动时: 'ondevicemotion',
    设备方向改变时: 'ondeviceorientation',
    设备绝对方向改变时: 'ondeviceorientationabsolute',
    游戏手柄连接时: 'ongamepadconnected',
    游戏手柄断开时: 'ongamepaddisconnected',
    全屏改变时: "onfullscreenchange",
    全屏出错时: "onfullscreenerror",
    指针锁定改变时: "onpointerlockchange",
    指针锁定出错时: "onpointerlockerror",
    就绪状态改变时: "onreadystatechange",
    可见性改变时: "onvisibilitychange",
    中止时: 'onabort',
    失去焦点时: 'onblur',
    取消时: 'oncancel',
    可播放时: 'oncanplay',
    可播放到底时: 'oncanplaythrough',
    改变时: 'onchange',
    点击时: 'onclick',
    关闭时: 'onclose',
    右击鼠标时: 'oncontextmenu',
    信号改变时: 'oncuechange', /* 配合 轨道 元素使用 */
    双击时: 'ondblclick',
    拖动时: 'ondrag',
    拖动结束时: 'ondragend',
    拖动进入时: 'ondragenter',
    拖动退出时: 'ondragexit',
    拖动离开时: 'ondragleave',
    拖动经过时: 'ondragover',
    拖动开始时: 'ondragstart',
    释放时: 'ondrop',
    时长改变时: 'ondurationchange',
    变空时: 'onemptied',
    结束时: 'onended',
    出错时: 'onerror',
    获得焦点时: 'onfocus',
    输入时: 'oninput',
    无效时: 'oninvalid',
    键按下时: 'onkeydown',
    按键时: 'onkeypress',
    键释放时: 'onkeyup',
    加载完毕时: 'onload',
    加载停止时: 'onloadend',
    数据加载完毕时: 'onloadeddata',
    元数据加载完毕时: 'onloadedmetadata',
    加载开始时: 'onloadstart',
    鼠标按下时: 'onmousedown',
    鼠标进入时: 'onmouseenter',
    鼠标离开时: 'onmouseleave',
    鼠标移动时: 'onmousemove',
    鼠标移出时: 'onmouseout',
    鼠标经过时: 'onmouseover',
    鼠标释放时: 'onmouseup',
    鼠标滚轮滚动时: 'onmousewheel',
    暂停时: 'onpause',
    播放时: 'onplay',
    进行播放时: 'onplaying', /* 待定 */
    进行中时: 'onprogress',
    速度改变时: 'onratechange',
    重置时: 'onreset',
    调整大小时: 'onresize',
    滚动时: 'onscroll',
    寻位结束时: 'onseeked',
    寻位开始时: 'onseeking',
    选中时: 'onselect',
    显示时: 'onshow',
    排序时: 'onsort',
    停顿时: 'onstalled',
    提交时: 'onsubmit',
    挂起时: 'onsuspend',
    时间更新时: 'ontimeupdate',
    切换时: 'ontoggle',
    音量改变时: 'onvolumechange',
    等待时: 'onwaiting',
    离线时: 'onoffline',
    上线时: 'ononline',
    页面隐藏时: 'onpagehide',
    页面显示时: 'onpageshow',
    弹出状态时: 'onpopstate',
    存储时: 'onstorage',
}

module.exports = {
    reservedWordsMap,
    globalIdentMap,
    mathMap,
    globalStringsMap,
    typeofTagsMap,
    consoleMap,
    JSONMap,
    documentMap,
    onEventMap,
}